package com.zqq.glide.touchView;

import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.TextView;

/**
 * 自定义view检查touch事件
 *
 * 3.当一个touch事件到达一个viewgroup时，先到达dispatchTouchEvent这个方法，然后到onInterceptTouchEvent方法：
 *      a、如果onInterceptTouchEvent返回true，那么执行该viewgroup的onTouchEvent。由该viewgroup处理touch，不再传递到child组件。
 *      b、如果onInterceptTouchEvent返回false，那么寻找对应位置上的child：
 *
 *  4.当一个touch事件到达一个view时，先到达dispatchTouchEvent这个方法，然后执行view的onTouchEvent方法。
 *
 * @author zqq on 2018/7/16
 */
public class MyTextView extends TextView {

    private final String TAG = "Tag--";

    public MyTextView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }


    /**
     * 1.如果最终需要处理事件的view的onTouchEvent()返回了false，
     *      那么该事件将被传递至其上一层次的view的onTouchEvent()处理。且后续不会再有操作如MOVE、UP等。
     * 2.如果最终需要处理事件的view 的onTouchEvent()返回了true，
     *      那么后续事件将可以继续传递给该view的onTouchEvent()处理，如MOVE、UP等。
     */
    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        int action = ev.getAction();
        switch (action) {
            case MotionEvent.ACTION_DOWN:
                Log.e(TAG, "MyTextView  Touch   DOWN");
                break;
            case MotionEvent.ACTION_MOVE:
                Log.e(TAG, "MyTextView  Touch   MOVE");
                break;
            case MotionEvent.ACTION_UP:
                Log.e(TAG, "MyTextView  Touch   UP");
                break;
            case MotionEvent.ACTION_CANCEL:  //asss
                Log.e(TAG, "MyTextView  Touch   CANCEL");
                break;
            default:
                break;
        }
        return false;
    }

    /**
     * 首先到达此ViewGroup的此方法，然后到onInterceptTouchEvent方法：
     */
    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        Log.e(TAG, "MyTextView  dispatch  ");
        boolean r = super.dispatchTouchEvent(event);
        Log.e(TAG, "MyTextView  dispatch   结果  " + r);
        return r;
    }

}
